1. Field of the Invention
The present invention relates to the field of software testing and more particularly to automated software testing.
2. Description of the Related Art
The art of software development extends far beyond a mere coding of a functional specification for a computer program. Modern software development conforms to a lifecycle which begins with the functional specification leading into the formulation of a suitable architecture for an application implementing the functional specification. The lifecycle continues with the physical coding of the application and includes iterative testing and modification cycles to ensure the integrity of the code. Finally, the execution of the completed code can be analyzed to facilitate the further revision of the code to improve the performance of the code.
Traditional testing of a computer program can include the external monitoring of the integrity of the program and the performance of the program, either subjectively based upon end user impression, or objectively based upon independently acquired metrics. In the latter circumstance, the integrity of the program can include the simulation of user interaction with the user interface of the program to ensure the proper operation of the program logic. Likewise, the performance of the program can include an internal monitoring of the code through software test tooling as is known in the art.
Often, to test an application, testing personnel must establish and configure a testing environment. Within the testing environment, a test protocol can be defined for exercising a computing application. The individual steps and portions of the testing protocol, in turn, can be automated through operating system scripts, batch files and the like. In this regard, for a test protocol, a typical test cycle can include multiple phases that test a system from various angles, such as functional, performance, and system test phases.
Importantly, due to differences in testing approach and goal, each test phase can include a separate automation design and implementation; thus, making reusability among the phases very difficult, if not impossible. Even within the same phase of testing, reusability is not always achievable due to the complexity of the tests. In this regard, if multiple tests use the same operational procedures, the multiple tests can require different types of input parameters and produce different output. Finally, usually more than one person or team can be engaged in test automation, leading to near parallel automation solutions that do not enable testers to contribute to and share from a common pool of automation assets. As such, the process of test automation can be redundant and inefficient.